require "import"
--require "Pretend"
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "android.R$id"
import "java.io.File"
import "android.graphics.drawable.GradientDrawable"
import "android.app.AlertDialog"
import "android.text.SpannableString"
import "android.text.style.ForegroundColorSpan"
import "android.text.Spannable"
import "android.graphics.PorterDuffColorFilter"
import "android.graphics.PorterDuff"
import "android.webkit.MimeTypeMap"
import "java.io.FileOutputStream"
import "java.util.zip.ZipFile"
import "java.io.File"
import "android.animation.Animator"
import "android.animation.ValueAnimator"
import "android.view.animation.AccelerateDecelerateInterpolator"
import "com.sdsmdg.tastytoast.*"
import "android.util.TypedValue"
import "android.content.*"
import "android.os.Build"
import "java.lang.Math"
import "android.view.*"
import "com.androlua.Ticker"
import "android.graphics.Color"
import "android.animation.Animator"
import "android.animation.AnimatorSet"
import "android.view.animation.*"
import "android.content.ContextWrapper"
import "android.content.Context"
import "android.widget.LinearLayout"
import "android.widget.TextView"
import "android.widget.ListView"
import "android.widget.ImageView"
import "android.widget.AdapterView"
import "com.androlua.LuaAdapter"
import "android.R$layout"
import "android.support.v4.widget.SlidingPaneLayout"
import "android.support.v4.widget.SlidingPaneLayout$PanelSlideListener"
import "cjson"
import "android.content.res.Configuration"
--声明一个容器
_fun={}
--print(activity.getLuaDir())
--判断是否有选择性声明的文件
if File(activity.getLuaDir().."/jwyhhsk_chooseLoad.aly").isFile() then
  import "jwyhhsk_chooseLoad"
  local jcl=jwyhhsk_chooseLoad
  jwyhhsk_chooseLoad=nil
 else

  --声明子函数
  _fun.控件操作=function(id)
    --声明一个容器
    local _kjcz={}
    --声明子函数
    --简单函数
    _kjcz.圆角=function(背景,左上,左下,右上,右下,上左,下左,右下,下右)
      --设置缺省值
      if not 背景 then
        背景=0xffffffff
      end
      if not 左上 then
        左上=0
      end
      if not 左下 then
        左下=左上
      end
      if not 右上 then
        右上=左上
      end
      if not 右下 then
        右下=左下
      end
      if not 上左 then
        上左=左上
      end
      if not 下左 then
        下左=左下
      end
      if not 上右 then
        上右=右上
      end
      if not 下右 then
        下右=右下
      end
      --      print(左上,左下,右上,右下,上左,下左,上右,下右)
      local _drawable = GradientDrawable()
      _drawable.setShape(GradientDrawable.RECTANGLE)
      _drawable.setColor(背景)
      _drawable.setCornerRadii({上左,左上,上右,右上,下右,右下,下左,左下});
      --返回
      if id then
        id.setBackgroundDrawable(_drawable)
       else
        return _drawable
      end
    end
    --高级函数
    _kjcz.绘制=function()
      --声明一个容器
      local _hz={}
      --声明一个drawable
      local _drawable=GradientDrawable()
      --声明子函数
      _hz.设置形状=function(形状)
        if type(形状)=="string" then
          if 形状=="线" then
            _drawable.setShape(GradientDrawable.LINE)
           elseif 形状=="线性梯度" then
            _drawable.setShape(GradientDrawable.LINEAR_GRADIENT)
           elseif 形状=="椭圆" then
            _drawable.setShape(GradientDrawable.OVAL)
           elseif 形状=="径向梯度" then
            _drawable.setShape(GradientDrawable.RADIAL_GRADIENT)
           elseif 形状=="矩形" then
            _drawable.setShape(GradientDrawable.RECTANGLE)
           elseif 形状=="环形" then
            _drawable.setShape(GradientDrawable.RING)
           elseif 形状=="扫描梯度" then
            _drawable.setShape(GradientDrawable.SWEEP_GRADIENT)
          end
         else
          _drawable.setShape(形状)
        end
        return _hz
      end
      --返回
      return _hz
    end
    _kjcz.浏览器=function()
      --声明一个容器
      local _llq={}
      --声明一个数据池
      local _data={}
      _data.浏览器=id
      --声明子函数
      _llq.加载JS=function(JS代码)
        _data.浏览器.loadUrl([[javascript:]]..JS代码)
        return _llq
      end
      _llq.加载链接=function(链接)
        _data.浏览器.loadUrl(链接)
        return _llq
      end
      return _llq
    end
    --返回
    return _kjcz
  end
  _fun.对话框=function(ID)
    --判断对话框是否为泡沫对话框
    local _show
    if ID then
      if _fun.文件操作("data/data/"..activity.getPackageName().."/jwyhhsk/dialog/"..ID..".lua").是否存在() then
        _show=false

       else
        _show=true
        _fun.文件操作("data/data/"..activity.getPackageName().."/jwyhhsk/dialog/"..ID..".lua").新建文件()
      end
     else
      _show=true
    end
    --声明一个容器
    local _dhk={}
    --声明一个数据池
    local _data={}
    --设置缺省值
    _data["标题颜色"]=0xff99ff99
    _data["消息颜色"]=0xff000000
    _data["积极按钮颜色"]=0xff99ff99
    _data["中立按钮颜色"]=0xff99ff99
    _data["消极按钮颜色"]=0xff99ff99
    _data["角度"]=30
    _data["颜色"]=0xffffffff
    --声明一个对话框
    local _dialog=AlertDialog.Builder(this)
    --声明子函数
    _dhk.设置标题=function(内容,颜色)
      _dialog.setTitle(内容)
      _data["标题"]=内容
      if 颜色 then
        _data["标题颜色"]=颜色
      end
      return _dhk
    end
    _dhk.设置消息=function(内容,颜色)
      _dialog.setMessage(内容)
      if 颜色 then
        _data["消息颜色"]=颜色
      end
      return _dhk
    end
    _dhk.设置积极按钮=function(内容,回调,颜色)
      _dialog.setPositiveButton(内容,function(v)
        if v and 回调 then
          回调()
        end
      end)
      _data["积极按钮"]=true
      if 颜色 then
        _data["积极按钮颜色"]=颜色
      end
      return _dhk
    end
    _dhk.设置中立按钮=function(内容,回调,颜色)
      _dialog.setNeutralButton(内容,function(v)
        if v and 回调 then
          回调()
        end
      end)
      _data["中立按钮"]=true
      if 颜色 then
        _data["中立按钮颜色"]=颜色
      end
      return _dhk
    end
    _dhk.设置消极按钮=function(内容,回调,颜色)
      _dialog.setNegativeButton(内容,function(v)
        if v and 回调 then
          回调()
        end
      end)
      _data["消极按钮"]=true
      if 颜色 then
        _data["消极按钮颜色"]=颜色
      end
      return _dhk
    end
    _dhk.设置视图=function(视图)
      if type(视图)=="table" then
        _dialog.setView(loadlayout(视图))
       else
        _dialog.setView(视图)
      end
      return _dhk
    end
    _dhk.设置列表=function(列表项,回调)
      _dialog.setItems(列表项,回调)
      return _dhk
    end
    _dhk.设置单选=function(列表项,回调)
      _dialog.setSingleChoiceItems(列表项,-1,回调)
      return _dhk
    end
    _dhk.设置多选=function(列表项,回调)
      _dialog.setMultiChoiceItems(列表项, nil,回调)
      return _dhk
    end
    _dhk.设置圆角=function(角度)
      _data["角度"]=角度
      return _dhk
    end
    _dhk.设置颜色=function(颜色)
      _data["颜色"]=颜色
      return _dhk
    end
    _dhk.显示=function()
      --判断是否应该显示
      if _show then
        --显示
        _dialog=_dialog.show()
        --修改视图
        _dialog.findViewById(android.R.id.message).setTextColor(_data["消息颜色"])
        if type(_data["角度"])=="number" then
          _fun.控件操作(_dialog.getWindow()).圆角(_data["颜色"],_data["角度"])
         else

        end
        if _data["标题"] then
          _dialog.setTitle(SpannableString(tostring(_data["标题"]))
          .setSpan(ForegroundColorSpan(_data["标题颜色"]),0,utf8.len(_data["标题"]),Spannable.SPAN_EXCLUSIVE_INCLUSIVE))
        end
        if Build.VERSION.SDK_INT >= 22 then
          if _data["积极按钮"] then
            _dialog.getButton(_dialog.BUTTON_POSITIVE).setTextColor(_data["积极按钮颜色"])
          end
          if _data["中立按钮"] then
            _dialog.getButton(_dialog.BUTTON_NEUTRAL).setTextColor(_data["中立按钮颜色"])
          end
          if _data["消极按钮"] then
            _dialog.getButton(_dialog.BUTTON_NEGATIVE).setTextColor(_data["消极按钮颜色"])
          end
         else

        end
        return _dialog
       else
      end
    end
    --返回
    return _dhk
  end
end

_fun.文件操作=function(path)
  --声明一个容器
  local _wjcz={}

  --声明子函数
  _wjcz.新建文件=function()
    File(tostring(File(tostring()).getParentFile())).mkdirs()
    File(path).createNewFile()
  end
  _wjcz.新建文件夹=function()
    File(path).mkdirs()
  end
  _wjcz.移动=function(新路径)
    File(path).renameTo(File(新路径))
  end
  _wjcz.追加更新=function(内容)
    io.open(path,"a+"):write(内容):close()
  end
  _wjcz.更新=function(内容)
    io.open(path,"w+"):write(内容):close()
  end
  _wjcz.写入=function(内容)
    io.open(path,"w"):write(内容):close()
  end
  _wjcz.读取=function()
    return io.open(path):read("*a")
  end
  _wjcz.按行读取=function(回调)
    for c in io.lines(文件路径) do
      回调(c)
    end
  end
  _wjcz.删除=function()
    File(path).delete()
  end
  _wjcz.复制=function(复制到)
    LuaUtil.copyDir(path,复制到)
  end
  _wjcz.替换文件内字符串=function(原,新)
    path=tostring(path)
    local _内容=io.open(path):read("*a")
    io.open(路径,"w+"):write(tostring(_内容:gsub(要替换的字符串,替换成的字符串))):close()
  end
  _wjcz.获取文件列表=function()
    return luajava.astable(File(path).listFiles())
  end
  _wjcz.文件名=function()
    return File(path).getName()
  end
  _wjcz.文件大小=function()
    return Formatter.formatFileSize(activity,File(tostring(path)).length())
  end
  _wjcz.最后修改时间=function()
    local cal = Calendar.getInstance()
    cal.setTimeInMillis(File(path).lastModified())
    return cal.getTime().toLocaleString()
  end
  _wjcz.大小=function()
    return File(path).length()
  end
  _wjcz.父文件夹=function()
    return File(path).getParentFile()
  end
  _wjcz.Mime类型=function()
    return tostring(MimeTypeMap.getSingleton().getMimeTypeFromExtension(tostring(name):match("%.(.+)")))
  end
  _wjcz.是否文件夹=function()
    return File(path).isDirectory()
  end
  _wjcz.是否文件=function()
    return File(path).isFile()
  end
  _wjcz.是否存在=function()
    return File(path).exists()
  end
  _wjcz.是否隐藏=function()
    return File(path).isHidden()
  end
  _wjcz.压缩=function(压缩到)
    ZipUtil.zip(path,压缩到)
  end
  _wjcz.解压缩=function(解压到,要解压,回调)
    if 要解压 then
      local time=os.clock()
      task(function(path,解压到,要解压)
        require "import"
        import "java.util.zip.*"
        import "java.io.*"
        local file = File(path)
        local outFile = File(解压到)
        local zipFile = ZipFile(file)
        local entry = zipFile.getEntry(要解压)
        local input = zipFile.getInputStream(entry)
        local output = FileOutputStream(outFile)
        local byte=byte[entry.getSize()]
        local temp=input.read(byte)
        while temp ~= -1 do
          output.write(byte)
          temp=input.read(byte)
        end
        input.close()
        output.close()
      end,path,解压到,要解压,
      function()
        回调(os.clock()-time)
      end)
     else
      ZipUtil.unzip(path,解压到)
    end
  end
  _wjcz.搜索=function(文件名)
    require "import"
    local function find(name)
      local n=0
      local t=os.clock()
      local ret={}
      require "import"
      import "java.io.File"
      import "java.lang.String"
      local function FindFile(catalog,name)
        local name=tostring(name)
        local ls=catalog.listFiles() or File{}
        for 次数=0,#ls-1 do
          --local 目录=tostring(ls[次数])
          local f=ls[次数]
          if f.isDirectory() then--如果是文件夹则继续匹配
            FindFile(f,name)
           else--如果是文件则
            n=n+1
            if n%1000==0 then
              --print(n,os.clock()-t)
            end
            local nm=f.Name
            if string.find(nm,name) then
              --thread(insert,目录)
              table.insert(ret,nm)
              print(nm)
            end
          end
          luajava.clear(f)
        end
      end
      FindFile(catalog,name)
      print("ok",n,#ret)
    end
    import "java.io.File"
    catalog=File(path)
    thread(find,catalog,文件名)
  end
  return _wjcz
end

_fun.变量操作=function(变量)
  --声明一个容器
  local _blcz={}
  _blcz["变量"]=变量
  --声明子函数
  _blcz.换算=function(原,新)
    if 新=="整数" then
      return tointeger(_blcz["变量"])
     elseif 新=="字符串" then
      return tostring(_blcz["变量"])
     elseif 新=="数字" then
      return tonumber(_blcz["变量"])
     elseif 新=="px" then
      local type={px=0,dp=1,sp=2,pt=3,["in"]=4,mm=5}
      return TypedValue.applyDimension(type[原],tonumber(_blcz["变量"]),this.getResources().getDisplayMetrics())
    end
  end
  _blcz.遍历=function(回调)
    for key,value in ipairs(_blcz["变量"])
      do
      回调(key,value)
    end
  end
  _blcz.array2json=function()
    return cjson.encode(_blcz["变量"])
  end
  _blcz.json2array=function()
    return cjson.decode(_blcz["变量"])
  end
  _blcz.base64加密=function()
    local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    local s64 = ''
    local str = _blcz["变量"]
    while #str > 0 do
      local bytes_num = 0
      local buf = 0
      for byte_cnt=1,3 do
        buf = (buf * 256)
        if #str > 0 then
          buf = buf + string.byte(str, 1, 1)
          str = string.sub(str, 2)
          bytes_num = bytes_num + 1
        end
      end
      for group_cnt=1,(bytes_num+1) do
        local b64char = math.fmod(math.floor(buf/262144), 64) + 1
        s64 = s64 .. string.sub(b64chars, b64char, b64char)
        buf = buf * 64
      end
      for fill_cnt=1,(3-bytes_num) do
        s64 = s64 .. '='
      end
    end
    return s64
  end
  _blcz.base64解密=function()
    local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    local temp={}
    local str64 = _blcz["变量"]
    for i=1,64 do
        temp[string.sub(b64chars,i,i)] = i
    end
    temp['=']=0
    local str=""
    for i=1,#str64,4 do
      if i>#str64 then
        break
      end
      local data = 0
      local str_count=0
      for j=0,3 do
        local str1=string.sub(str64,i+j,i+j)
        if not temp[str1] then
          return
        end
        if temp[str1] < 1 then
          data = data * 64
        else
          data = data * 64 + temp[str1]-1
          str_count = str_count + 1
        end
      end
      for j=16,0,-8 do
        if str_count > 0 then
          str=str..string.char(math.floor(data/math.pow(2,j)))
          data=math.mod(data,math.pow(2,j))
          str_count = str_count - 1
        end
      end
    end

    local last = tonumber(string.byte(str, string.len(str), string.len(str)))
    if last == 0 then
      str = string.sub(str, 1, string.len(str) - 1)
    end
    return str
  end
  _blcz.rc4加密=function(密钥)
    local rc4 = {}
    local insert, concat, modf, tostring, char = table.insert, table.concat, math.modf, tostring, string.char
    local function numberToBinStr(x)
      local ret = {}
      while x~=1 and x~=0 do
        insert(ret, 1, x%2)
        x=modf(x/2)
      end
      insert(ret, 1, x)
      for i = 1, 8 - #ret do
        insert(ret, 1, 0)
      end
      return concat(ret)
    end
    local function computeBinaryKey(str)
      local t = {}
      for i = #str, 1, -1 do
        insert(t, numberToBinStr(str:byte(i,i)))
      end
      return concat(t)
    end
    local binaryKeys = setmetatable({}, {__mode = "k"})
    local function binaryKey(key)
      local v = binaryKeys[key]
      if v == nil then
        v = computeBinaryKey(key)
        binaryKeys[key] = v
      end
      return v
    end
    local function initialize_state(key)
      local S = {}; for i = 0, 255 do S[i] = i end
      key = binaryKey(key)
      local j = 0
      for i = 0, 255 do
        local idx = (i % #key) +1
        j = (j + S[i] + tonumber(key:sub(idx, idx))) % 256
        S[i], S[j] = S[j], S[i]
      end
      S.i = 0
      S.j = 0
      return S
    end
    local function encrypt_one(state, byt)
      state.i = (state.i+1) % 256
      state.j = (state.j + state[state.i]) % 256
      state[state.i], state[state.j] = state[state.j], state[state.i]
      local K = state[(state[state.i] + state[state.j]) % 256]
      return K ~ byt
    end
    function rc4.encrypt(text, key)
      local state = initialize_state(key)
      local encrypted = {}
      for i = 1, #text do
        encrypted[i] = ("%02X"):format(encrypt_one(state, text:byte(i,i)))
      end
      return concat(encrypted)
    end
    function rc4.decrypt(text, key)
      local state = initialize_state(key)
      local decrypted = {}
      for i = 1, #text, 2 do
        insert(decrypted, char(encrypt_one(state, tonumber(text:sub(i, i+1), 16))))
      end
      return concat(decrypted)
    end
    return rc4.encrypt(_blcz["变量"],密钥)
  end
  _blcz.rc4解密=function(密钥)
    local rc4 = {}
    local insert, concat, modf, tostring, char = table.insert, table.concat, math.modf, tostring, string.char
    local function numberToBinStr(x)
      local ret = {}
      while x~=1 and x~=0 do
        insert(ret, 1, x%2)
        x=modf(x/2)
      end
      insert(ret, 1, x)
      for i = 1, 8 - #ret do
        insert(ret, 1, 0)
      end
      return concat(ret)
    end
    local function computeBinaryKey(str)
      local t = {}
      for i = #str, 1, -1 do
        insert(t, numberToBinStr(str:byte(i,i)))
      end
      return concat(t)
    end
    local binaryKeys = setmetatable({}, {__mode = "k"})
    local function binaryKey(key)
      local v = binaryKeys[key]
      if v == nil then
        v = computeBinaryKey(key)
        binaryKeys[key] = v
      end
      return v
    end
    local function initialize_state(key)
      local S = {}; for i = 0, 255 do S[i] = i end
      key = binaryKey(key)
      local j = 0
      for i = 0, 255 do
        local idx = (i % #key) +1
        j = (j + S[i] + tonumber(key:sub(idx, idx))) % 256
        S[i], S[j] = S[j], S[i]
      end
      S.i = 0
      S.j = 0
      return S
    end
    local function encrypt_one(state, byt)
      state.i = (state.i+1) % 256
      state.j = (state.j + state[state.i]) % 256
      state[state.i], state[state.j] = state[state.j], state[state.i]
      local K = state[(state[state.i] + state[state.j]) % 256]
      return K ~ byt
    end
    function rc4.encrypt(text, key)
      local state = initialize_state(key)
      local encrypted = {}
      for i = 1, #text do
        encrypted[i] = ("%02X"):format(encrypt_one(state, text:byte(i,i)))
      end
      return concat(encrypted)
    end
    function rc4.decrypt(text, key)
      local state = initialize_state(key)
      local decrypted = {}
      for i = 1, #text, 2 do
        insert(decrypted, char(encrypt_one(state, tonumber(text:sub(i, i+1), 16))))
      end
      return concat(decrypted)
    end
    return rc4.decrypt(_blcz["变量"],密钥)
  end
  --返回
  return _blcz
end

_fun.工程模式=function()
  --声明一个容器
  local _gcms={}
  --声明子函数

  --返回
  return _gcms
end

_fun.提示=function()
  --声明一个容器
  local _ts={}
  --声明子函数
  _ts.e4a=function(内容,类型,背景,圆角)
    if not 背景 then
      背景=0xffffffff
    end
    if not 圆角 then
      圆角=40
    end
    if not 类型 then
      类型="Default"
    end
    --猫九原创
    --2275360767
    if 类型=="Error" then
      toast=Toast.makeText(activity,"",Toast.LENGTH_SHORT)
      .setView(loadlayout({
        LinearLayout,
        id="root_layout",
        layout_width="match_parent",
        layout_height="wrap_content",
        background="#00000000",
        orientation="vertical",
        {
          LinearLayout,
          id="base_layout",
          layout_width="wrap_content",
          layout_height="wrap_content",
          layout_marginBottom="25dp",
          layout_marginLeft="30dp",
          layout_marginRight="30dp",
          layout_marginTop="25dp",
          background="#FFFFFF",
          orientation="horizontal",
          {
            LinearLayout,
            id="errorViewLayout",
            layout_width="match_parent",
            layout_height="match_parent",
            gravity="center",
            {
              ErrorToastView,
              id="q",
              layout_width="50dp",
              layout_height="50dp",
              layout_gravity="center_vertical|left",
              layout_margin="10px",
            },
          },
          {
            TextView,
            id="toastMessage",
            layout_width="match_parent",
            layout_height="wrap_content",
            gravity="center_vertical",
            padding="10dp",
            text=内容,
          },
        },
      }))
      .show()
      q.startAnim()
     elseif 类型=="Info" then
      toast=Toast.makeText(activity,"",Toast.LENGTH_SHORT)
      .setView(loadlayout({
        LinearLayout,
        id="root_layout",
        layout_width="match_parent",
        layout_height="wrap_content",
        background="#00000000",
        orientation="vertical",
        {
          LinearLayout,
          id="base_layout",
          layout_width="wrap_content",
          layout_height="wrap_content",
          layout_marginBottom="25dp",
          layout_marginLeft="30dp",
          layout_marginRight="30dp",
          layout_marginTop="25dp",
          background="background_toast",
          orientation="horizontal",
          {
            LinearLayout,
            id="errorViewLayout",
            layout_width="match_parent",
            layout_height="match_parent",
            gravity="center",
            {
              InfoToastView,
              id="w",
              layout_width="50dp",
              layout_height="50dp",
              layout_gravity="center_vertical|left",
              layout_margin="10px",
            },
          },
          {
            TextView,
            id="toastMessage",
            layout_width="match_parent",
            layout_height="wrap_content",
            gravity="center_vertical",
            padding="10dp",
            text=内容;
          },
        },
      }))
      .show()
      w.startAnim()
     elseif 类型=="Default" then
      toast=Toast.makeText(activity,"",Toast.LENGTH_SHORT)
      .setView(loadlayout({
        LinearLayout,
        id="root_layout",
        layout_width="match_parent",
        layout_height="wrap_content",
        background="#00000000",
        orientation="vertical",
        {
          LinearLayout,
          id="base_layout",
          layout_width="wrap_content",
          layout_height="wrap_content",
          layout_marginBottom="25dp",
          layout_marginLeft="30dp",
          layout_marginRight="30dp",
          layout_marginTop="25dp",
          background="background_toast",
          orientation="horizontal",
          {
            LinearLayout,
            id="defaultViewLayout",
            layout_width="match_parent",
            layout_height="match_parent",
            gravity="center",
            {
              DefaultToastView,
              id="e",
              layout_width="50dp",
              layout_height="50dp",
              layout_gravity="center_vertical|left",
              layout_margin="10px",
            },
          },
          {
            TextView,
            id="toastMessage",
            layout_width="match_parent",
            layout_height="wrap_content",
            gravity="center_vertical",
            padding="10dp",
            text=内容,
          },
        },
      }))
      .show()
      e.startAnim()
     elseif 类型=="Success" then
      toast=Toast.makeText(activity,"",Toast.LENGTH_SHORT)
      .setView(loadlayout({
        LinearLayout,
        id="root_layout",
        layout_width="match_parent",
        layout_height="wrap_content",
        background="#00000000",
        orientation="vertical",
        {
          LinearLayout,
          id="base_layout",
          layout_width="wrap_content",
          layout_height="wrap_content",
          layout_marginBottom="25dp",
          layout_marginLeft="30dp",
          layout_marginRight="30dp",
          layout_marginTop="25dp",
          background="background_toast",
          orientation="horizontal",
          {
            LinearLayout,
            id="linearLayout",
            layout_width="match_parent",
            layout_height="match_parent",
            gravity="center",
            {
              SuccessToastView,
              id="r",
              layout_width="50dp",
              layout_height="50dp",
              layout_gravity="center_vertical|left",
              layout_margin="10px",

            },
          },
          {
            TextView,
            id="toastMessage",
            layout_width="match_parent",
            layout_height="wrap_content",
            gravity="center_vertical",
            padding="10dp",
            text=内容,
          },
        },
      }))
      .show()
      r.startAnim()
     else
      print("没有这种类型")
    end
    _fun.控件操作(base_layout).圆角(背景,圆角)
  end

  _ts.长条通知=function(是否自动消失)
    local mSnackerBar={shouldDismiss=是否自动消失}
    local w=activity.width
    local layout={
      LinearLayout,
      Gravity="bottom",
      {
        LinearLayout,
        layout_height=-2,
        layout_width=-1,
        Gravity="center",
        BackgroundColor=0xff333333,
        {
          TextView,
          textColor=0xffffffff,
          layout_weight=.8,
          paddingLeft="10dp",
          paddingTop="5dp",
          paddingBottom="5dp",
          layout_width=0,
        },
        {Button,
          layout_height=-2,
          style="?android:attr/buttonBarButtonStyle",
          text="DONE",
        }
      }
    }
    local function addView(view)
      local mLayoutParams=ViewGroup.LayoutParams
      (-1,-1)
      activity.Window.DecorView.addView(view,mLayoutParams)
    end
    local function removeView(view)
      activity.Window.DecorView.removeView(view)
    end
    --设置提示文字
    function mSnackerBar.设置消息(textMsg)
      mSnackerBar.textView.text=textMsg
      return mSnackerBar
    end
    --设置按钮文字
    function mSnackerBar.设置按钮(内容,回调)
      mSnackerBar.actionView.text=内容
      mSnackerBar.actionView.onClick=
      function()
        回调()
        mSnackerBar.dismiss()
      end
      return mSnackerBar
    end
    --显示
    function mSnackerBar.显示()
      local view=mSnackerBar.view
      addView(view)
      view.translationY=300
      view.animate().translationY(0)
      .setInterpolator(AccelerateDecelerateInterpolator())
      .setDuration(400).start()
      local function indefiniteDismiss(snackerBar)
        task(2000,function()
          if snackerBar.shouldDismiss==true then
            snackerBar.dismiss()
           else
            indefiniteDismiss(snackerBar)
          end
        end)
      end
      indefiniteDismiss(mSnackerBar)
    end
    --关闭
    function mSnackerBar.dismiss()
      local view=mSnackerBar.view
      view.animate().translationY(300)
      .setDuration(400)
      .setListener(Animator.AnimatorListener{
        onAnimationEnd=function()
          removeView(view)
        end
      }).start()
    end
    mSnackerBar.__index=mSnackerBar
    mSnackerBar.view=loadlayout(layout)
    mSnackerBar.bckView=mSnackerBar.view
    .getChildAt(0)
    mSnackerBar.textView=mSnackerBar.bckView
    .getChildAt(0)
    mSnackerBar.actionView=mSnackerBar.bckView
    .getChildAt(1)
    local function animate(v,tx,dura)
      ValueAnimator().ofFloat({v.translationX,tx}).setDuration(dura)
      .addUpdateListener( ValueAnimator.AnimatorUpdateListener
      {
        onAnimationUpdate=function( p1)
          local f=p1.animatedValue
          v.translationX=f
          v.alpha=1-math.abs(v.translationX)/w
        end
      }).addListener(ValueAnimator.AnimatorListener{
        onAnimationEnd=function()
          if math.abs(tx)>=w then
            removeView(mSnackerBar.view)
          end
        end
      }).start()
    end
    local frx,p,v,fx=0,0,0,0
    mSnackerBar.bckView.setOnTouchListener(View.OnTouchListener{
      onTouch=function(view,event)
        if event.Action==event.ACTION_DOWN then
          mSnackerBar.shouldDismiss=false
          frx=event.x
          fx=event.x
         elseif event.Action==event.ACTION_MOVE then
          --高精度手指速度测量:)
          if math.abs(event.rawX-frx)>=2 then
            v=math.abs((frx-event.rawX)/(os.clock()-p)/1000)
          end
          p=os.clock()
          frx=event.rawX
          view.translationX=frx-fx
          view.alpha=1-math.abs(view.translationX)/w
         elseif event.Action==event.ACTION_UP then
          mSnackerBar.shouldDismiss=true
          local tx=view.translationX
          if tx>=w/5 then
            animate(view,w,(w-tx)/v)
           elseif tx>0 and tx<w/5 then
            animate(view,0,tx/v)
           elseif tx<=-w/5 then
            animate(view,-w,(w+tx)/v)
           else
            animate(view,0,-tx/v)
          end
          fx=0
        end
        return true
      end
    })
    return mSnackerBar
  end
  --返回
  return _ts
end

_fun.布局=function()
  --声明一个容器
  local _bj={}
  --声明子函数
  _bj.动画_双圆=function()
    --声明一个容器
    local _dh_sy={}
    --声明一个数据池
    local _data={}
    --设置缺省值
    _data.父布局="all"
    _data.动画布局=
    {
      LinearLayout;--线性布局
      Orientation='vertical';--布局方向
      layout_width='fill';--布局宽度
      layout_height='fill';--布局高度
      background='#b467de87';--布局背景颜色(或者图片路径)
      {
        TextView;--文本控件
        layout_width='fill';--文本宽度
        layout_height='fill';--文本高度
        Gravity='center';--重力属性
        textColor='#ffffffff';--文本颜色
        text='动画范例（动画布局）';--显示的文本
        textSize='24sp';--文本大小
      };
    }
    主布局={
      LinearLayout;--线性布局
      Orientation='vertical';--布局方向
      layout_width='fill';--布局宽度
      layout_height='fill';--布局高度
      background='#ff5c5f56';--布局背景颜色(或者图片路径)
      {
        TextView;--文本控件
        layout_width='fill';--文本宽度
        layout_height='fill';--文本高度
        Gravity='center';--重力属性
        textColor='#ff000000';--文本颜色
        text='动画范例（主布局）';--显示的文本
        textSize='24sp';--文本大小
      };
    }
    --    _data.显示时长=5000
    _data.动画时长=1500
    _data.球1a=200
    _data.球1b=200
    _data.球2a=200
    _data.球2b=200
    _data.启动回调=function()end
    _data.动画回调=function()end
    _data.结束回调=function()end
    _data.动画布局ID={}
    --声明子函数
    _dh_sy.设置父布局=function(ID)
      _data.父布局=ID
      return _dh_sy
    end
    _dh_sy.设置动画布局=function(布局)
      _data.动画布局=布局
      return _dh_sy
    end
    _dh_sy.设置主布局=function(布局)
      _data.主布局=布局
      return _dh_sy
    end
    _dh_sy.设置显示时长=function(时长)
      _data.显示时长=时长
      return _dh_sy
    end
    _dh_sy.设置动画时长=function(时长)
      _data.动画时长=时长
      return _dh_sy
    end
    _dh_sy.设置圆1=function(距右,距顶)
      _data.球1a=距右
      _data.球1b=距顶
      return _dh_sy
    end
    _dh_sy.设置圆2=function(距左,距底)
      _data.球2a=距左
      _data.球2b=距底
      return _dh_sy
    end
    _dh_sy.设置启动回调=function(回调)
      _data.启动回调=回调
      return _dh_sy
    end
    _dh_sy.设置动画回调=function(回调)
      _data.动画回调=回调
      return _dh_sy
    end
    _dh_sy.设置结束回调=function(回调)
      _data.结束回调=回调
      return _dh_sy
    end
    _dh_sy.设置动画布局ID=function(ID)
      _data.动画布局ID=ID
      return _dh_sy
    end
    _dh_sy.开始动画=function()
      local function AppStartupAnimation(显示时间,动画时间)
        --创建定时器,并开始
        local TheTimer=Ticker()
        TheTimer.Period=显示时间
        TheTimer.start()

        TheTimer.onTick=function()
          TheTimer.stop()

          --开始动画
          local animatorSet = AnimatorSet()
          local animator1 = ViewAnimationUtils.createCircularReveal(_dhbj1,activity.getWidth()-_data.球1a,_data.球1b,Math.hypot(activity.getWidth(),activity.getHeight()),0);
          local animator2 = ViewAnimationUtils.createCircularReveal(_dhbj2,_data.球2a,activity.getHeight()+_fun.接口().导航栏().高度()-_data.球2b,Math.hypot(activity.getWidth(),activity.getHeight()),0);
          animatorSet.setDuration(动画时间)
          animatorSet.playTogether({animator1,animator2})
          animatorSet.start();
          _data.动画回调()
          --动画监听
          animatorSet.addListener(Animator.AnimatorListener{

            onAnimationStart=function(a)

            end,

            onAnimationEnd=function(a)

              _dhbj1.setVisibility(View.GONE)
              _dhbj2.setVisibility(View.GONE)
              _data.结束回调()
            end,

            onAnimationCancel=function(a)

            end,

            onAnimationRepeat=function(a)

            end,
          })

        end

      end

      --开始
      AppStartupAnimation(200,_data.动画时长)
    end
    _dh_sy.显示=function()
      --代码正式开始
      if _data.父布局=="all" then
        activity.setContentView(loadlayout({
          FrameLayout,
          layout_width="fill",
          layout_height="fill",
          id="_qd";
          --你的界面布局
          {
            LinearLayout,
            orientation="vertical",
            layout_width="fill",
            layout_height="fill",
            background="#808080";
            id="_zbj";
          },

          --帧动画布局1
          {
            LinearLayout,
            orientation="vertical",
            layout_width="fill",
            layout_height="fill",
            background="#ff1d8ae7";
            gravity="center",
            id="_dhbj1";
          },
          {
            LinearLayout,
            orientation="vertical",
            layout_width="fill",
            layout_height="fill",
            background="#ff1d8ae7",
            gravity="center",
            id="_dhbj2",
          },
        }))
       else
        _data.父布局.addView(loadlayout({
          FrameLayout,
          layout_width="fill",
          layout_height="fill",

          --你的界面布局
          {
            LinearLayout,
            orientation="vertical",
            layout_width="fill",
            layout_height="fill",
            background="#808080";
            id="_zbj";
          },

          --帧动画布局1
          {
            LinearLayout,
            orientation="vertical",
            layout_width="fill",
            layout_height="fill",
            --background="#ff1d8ae7";
            gravity="center",
            id="_dhbj1";
          },
          {
            LinearLayout,
            orientation="vertical",
            layout_width="fill",
            layout_height="fill",
            --background="#ff1d8ae7",
            gravity="center",
            id="_dhbj2",
          }
        }))
      end
      if type(_data.主布局)=="table" then
        _zbj.addView(loadlayout(_data.主布局))
       else
        _zbj.addView(_data.主布局)
      end
      if type(_data.动画布局)=="table" then
        _dhbj2.addView(loadlayout(_data.动画布局))
        _fun.变量操作(_data.动画布局ID).遍历(function(key,value)
          if value then
            loadstring(value.."2="..value)()
          end
        end)
        _dhbj1.addView(loadlayout(_data.动画布局))
       else
        _dhbj2.addView(_data.动画布局)
        _fun.变量操作(_data.动画布局ID).遍历(function(key,value)
          if value then
            loadstring(value.."2="..value)()
          end
        end)
        _dhbj1.addView(_data.动画布局)
      end
      --状态栏,导航栏背景
      --activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS).setStatusBarColor(0xff1d8ae7);
      --activity.getWindow().setNavigationBarColor(Color.parseColor("#ff1d8ae7"));
      --activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      if _data.显示时间!=nil then
        local function AppStartupAnimation(显示时间,动画时间)
          --创建定时器,并开始
          local TheTimer=Ticker()
          TheTimer.Period=显示时间
          TheTimer.start()

          TheTimer.onTick=function()
            TheTimer.stop()

            --开始动画
            local animatorSet = AnimatorSet()
            local animator1 = ViewAnimationUtils.createCircularReveal(_dhbj1,activity.getWidth()-_data.球1a,_data.球1b,Math.hypot(activity.getWidth(),activity.getHeight()),0);
            local animator2 = ViewAnimationUtils.createCircularReveal(_dhbj2,_data.球2a,activity.getHeight()+_fun.接口().导航栏().高度()-_data.球2b,Math.hypot(activity.getWidth(),activity.getHeight()),0);
            animatorSet.setDuration(动画时间)
            animatorSet.playTogether({animator1,animator2})
            animatorSet.start();
            _data.动画回调()
            --动画监听
            animatorSet.addListener(Animator.AnimatorListener{

              onAnimationStart=function(a)

              end,

              onAnimationEnd=function(a)

                _dhbj1.setVisibility(View.GONE)
                _dhbj2.setVisibility(View.GONE)
                _data.结束回调()
              end,

              onAnimationCancel=function(a)

              end,

              onAnimationRepeat=function(a)

              end,
            })

          end

        end

        --开始
        AppStartupAnimation(_data.显示时长,_data.动画时长)
      end
      _data.启动回调()
      --返回主ID
      return _qd
    end
    --返回
    return _dh_sy
  end
  _bj.v4侧滑=function()
    --声明一个容器
    local _v4ch={}
    --声明一个数据池
    local _data={}
    --设置缺省值
    _v4ch.父布局="all"
    _v4ch.视差距离=0
    _v4ch.顶层渐变色=0xaaffffff
    _v4ch.侧滑渐变色=0xAfff0000
    _v4ch.侧滑背景="#ff80c77c"
    _v4ch.侧滑布局={
      LinearLayout;
      background="#0000ffff";
      layout_height="fill";
      layout_width="fill";
      {
        TextView;--文本控件
        layout_width='fill';--文本宽度
        layout_height='fill';--文本高度
        Gravity='center';--重力属性
        textColor='#ffffff';--文本颜色
        text='侧滑布局（v4侧滑范例）';--显示的文本
        textSize='24sp';--文本大小
      };
    }
    _v4ch.主布局={
      LinearLayout;
      backgroundColor=0xffffffff;
      layout_height="fill";
      layout_width="fill";
      {
        TextView;--文本控件
        layout_width='fill';--文本宽度
        layout_height='fill';--文本高度
        Gravity='center';--重力属性
        textColor='#000000';--文本颜色
        text='主布局（v4侧滑范例）';--显示的文本
        textSize='24sp';--文本大小
      };
    }
    _v4ch.动画效果=function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
      id2.setPivotX(0);
      id2.setPivotY(0);
      id2.setScaleX(1);
      id2.setScaleY(1);
    end
    _v4ch.侧滑宽度="80%w"
    --声明子函数
    _v4ch.设置父布局=function(ID)
      _v4ch.父布局=ID
      return _v4ch
    end
    _v4ch.设置视差距离=function(num)
      _v4ch.视差距离=num
      return _v4ch
    end
    _v4ch.设置顶层渐变色=function(颜色)
      _v4ch.顶层渐变色=颜色
      return _v4ch
    end
    _v4ch.设置侧滑渐变色=function(颜色)
      _v4ch.侧滑渐变色=颜色
      return _v4ch
    end
    _v4ch.设置侧滑背景=function(背景)
      _v4ch.侧滑背景=背景
      return _v4ch
    end
    _v4ch.设置侧滑布局=function(布局)
      _v4ch.侧滑布局=布局
      return _v4ch
    end
    _v4ch.设置主布局=function(布局)
      _v4ch.主布局=布局
      return _v4ch
    end
    _v4ch.设置动画效果=function(效果)
      if type(效果)=="string" then
        _v4ch.效果={
          QQ位移效果=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setTranslationX((slideOffset-1) * id1.getWidth()/2.0)
            id2.setScaleX(1);
            id2.setScaleY(1);
          end,
          缩放菜单=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setPivotX(-0.2* id1.getWidth());
            id1.setPivotY(id1.getHeight() / 2.0);
            id1.setScaleX(mpu);
            id1.setScaleY(mpu);
            id2.setScaleX(1);
            id2.setScaleY(1);
          end,
          缩放面板效果=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id2.setPivotX(0);
            id2.setPivotY(id2.getHeight()/2.0);
            id2.setScaleX(scale);
            id2.setScaleY(scale);
          end,
          缩放圆角下移=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            --[[            id1.setPivotX(-0.2*id1.getWidth());
            id1.setPivotY(id1.getHeight() / 2.0);
            id1.setScaleX(scaleLeft);
            id1.setScaleY(scaleLeft);]]
            id2.setPivotX(0);
            id2.setPivotY(id2.getHeight()/2.0);
            id2.setScaleX(scale);
            id2.setScaleY(scale);
            id2.setRadius(slideOffset*200+1)
            id2.setY(slideOffset*id2.getHeight()*0.1)
          end,
          同时缩放=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setPivotX(-0.2*id1.getWidth());
            id1.setPivotY(id1.getHeight() / 2.0);
            id1.setScaleX(scaleLeft);
            id1.setScaleY(scaleLeft);
            id2.setPivotX(0);
            id2.setPivotY(id2.getHeight()/2.0);
            id2.setScaleX(scale);
            id2.setScaleY(scale);
          end,
          平移缩放=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setTranslationX((slideOffset-1) * id1.getWidth() / 2.0);
            id1.setPivotX(-0.2 * id1.getWidth());
            id1.setPivotY(id1.getHeight() / 2.0);
            id1.setScaleX(scaleLeft);
            id1.setScaleY(scaleLeft);
            id2.setPivotX(0);
            id2.setPivotY(id2.getHeight()/2.0);
            id2.setScaleX(scale);
            id2.setScaleY(scale);
          end,
          放大缩放=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setTranslationX((slideOffset-1) * id1.getWidth() / 2.0);
            id1.setPivotX(-0.2 * id1.getWidth());
            id1.setPivotY(id1.getHeight() / 2.0);
            id1.setScaleX(sizes);
            id1.setScaleY(sizes);
            id2.setPivotX(0);
            id2.setPivotY(id2.getHeight()/2.0);
            id2.setScaleX(scale);
            id2.setScaleY(scale);
            id2.setScaleX(1);
            id2.setScaleY(1);
          end,
          翻转1=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setTranslationX((slideOffset-1) * id1.getWidth());
            id1.setRotationY(1*(1-slideOffset)*-95)
            id1.setScaleX(1 - 0*(1 - slideOffset));
            id1.setScaleY(1 - 0*(1 - slideOffset));
            id2.setScaleX(1);
            id2.setScaleY(1);
            id1.setPivotX(id1.getWidth());
          end,
          翻转2=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setRotationY(1*(1-slideOffset)*95)
            id1.setScaleX(1 - 0*(1 - slideOffset));
            id1.setScaleY(1 - 0*(1 - slideOffset));
            id2.setScaleX(1);
            id2.setScaleY(1);
            id1.setPivotX(0);
            id1.setCameraDistance(9000);
          end,
          翻转3=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id1.setTranslationX((slideOffset-1) * id1.getWidth());
            id1.setRotationY((1-slideOffset)*-90)
            --id1.setScaleX(1 - 0.0*(1 - slideOffset));
            --id1.setScaleY(1 - 0.0*(1 - slideOffset));
            id2.setScaleX(1);
            id2.setScaleY(1);
            id1.setPivotX(id1.getWidth());
          end,
          默认=
          function(id1,id2,slideOffset,scale,scaleLeft,mpu,sizes)
            id2.setPivotX(0);
            id2.setPivotY(0);
            id2.setScaleX(1);
            id2.setScaleY(1);
          end
        }
        _v4ch.动画效果=_v4ch.效果[效果]
       else
        _v4ch.动画效果=效果
      end
      return _v4ch
    end
    _v4ch.设置侧滑宽度=function(宽度)
      _v4ch.侧滑宽度=宽度
    end
    _v4ch.显示=function()
      --主要代码
      if _v4ch.父布局=="all" then
        activity.setContentView(loadlayout({
          SlidingPaneLayout;
          id="_ch",
          layout_width="fill";
          background=_v4ch.侧滑背景;
          layout_height="fill";
          {
            LinearLayout;
            id="_chl",
            --layout_gravity="left";
            --orientation="vertical";
            layout_height="fill";
            layout_width=_v4ch.侧滑宽度;
            backgroundColor="#0000ffff";
          };
          {
            CardView;
            id="_zym",
            --layout_gravity="left";
            --orientation="vertical";
            layout_height="fill";
            layout_width="fill";
            BackgroundColor="#ffffffff";
            {
              LinearLayout;
              id="_zym_l",
              layout_gravity="left";
              orientation="vertical";
              layout_height="fill";
              layout_width="fill";
              backgroundColor="#0000ffff";
            };
          }
        }))
       else
        print("h")
        _data.父布局.addView(loadlayout({
          SlidingPaneLayout;
          id="_ch",
          layout_width="fill";
          background=_v4ch.侧滑背景;
          layout_height="fill";
          {
            LinearLayout;
            id="_chl",
            --layout_gravity="left";
            --orientation="vertical";
            layout_height="fill";
            layout_width=_v4ch.侧滑宽度;
            backgroundColor="#0000ffff";
          };
          {
            CardView;
            id="_zym",
            --layout_gravity="left";
            --orientation="vertical";
            layout_height="fill";
            layout_width="fill";
            BackgroundColor="#ffffffff";
            {
              LinearLayout;
              id="_zym_l",
              layout_gravity="left";
              orientation="vertical";
              layout_height="fill";
              layout_width="fill";
              backgroundColor="#0000ffff";
            };
          }
        }))
      end
      if type(_v4ch.侧滑布局)=="table" then
        _chl.addView(loadlayout(_v4ch.侧滑布局))
       else
        _chl.addView(_v4ch.侧滑布局)
      end
      if type(_v4ch.主布局)=="table" then
        _zym_l.addView(loadlayout(_v4ch.主布局))
       else
        _zym_l.addView(_v4ch.主布局)
      end
      _ch.setPanelSlideListener(SlidingPaneLayout.PanelSlideListener{
        onPanelClosed=function()
          --print("关闭")
        end,
        onPanelOpened=function()
          --print("打开")
        end,
        onPanelSlide=function(mMenuPanel,slideOffset)
          local scale = 1 - 0.2* slideOffset
          local scaleLeft = 1 - 0.2*(1 - slideOffset)
          local mpu = 1 - 0.4*(1 - slideOffset)
          local sizes=1+0.4*(1-slideOffset)
          --阴影效果
          _zym.setTranslationZ(slideOffset*100)
          _v4ch.动画效果(_chl,_zym,slideOffset,scale,scaleLeft,mpu,sizes)
        end
      })
      _ch.setParallaxDistance(_v4ch.视差距离)
      _ch.setSliderFadeColor(_v4ch.顶层渐变色)
      _zym.onClick=function()
        if _ch.isOpen() then
          _ch.closePane()--关闭侧滑
        end
      end
      return _ch
    end
    --返回
    return _v4ch
  end
  --返回
  return _bj
end
_fun.接口=function()
  --声明一个容器
  local _jk={}
  --声明子函数
  _jk.沉浸=function()
    _fun.提示().长条通知(false).设置消息("由于技术原因，无法直接设置，把软件主题设置成Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor或xx_TranslucentDecor即可").设置按钮("复制主题名称",function()
      _fun.接口().复制文本("Theme_DeviceDefault_Light_NoActionBar_TranslucentDecor")
      _fun.提示().e4a("已复制到剪贴板","Success")
    end).显示()
  end
  _jk.复制文本=function(内容)
    activity.getSystemService(Context.CLIPBOARD_SERVICE).setText(内容)
  end
  _jk.是否暗色模式=function()
    return (activity.getContext().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
  end
  _jk.状态栏=function()
    --生命一个容器
    local _ztl={}
    --声明子函数
    _ztl.沉浸=function()
      activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
    end
    _ztl.颜色=function(颜色)
      if type(颜色)=="string" then
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS).setStatusBarColor(Color.parseColor(颜色));
       else
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS).setStatusBarColor(颜色);
      end
    end
    _ztl.亮色=function()
      activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
      --当状态栏颜色是白色时，可以用这个代码把状态栏的字体和图标设置为黑色
    end
    _ztl.高度=function()
      return activity.getResources().getDimensionPixelSize(activity.getResources().getIdentifier("status_bar_height","dimen","android"))
    end
    _ztl.显示=function()
      activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
    end
    _ztl.隐藏=function()
      activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
    end
    --返回
    return _ztl
  end
  _jk.导航栏=function()
    --声明一个容器
    local _dhl={}
    --声明子函数
    _dhl.高度=function()
      return this.getResources().getDimensionPixelSize(luajava.bindClass("com.android.internal.R$dimen")().navigation_bar_height)
    end
    --[[    _dhl.显示=function()

    end]]
    _dhl.隐藏=function()
      activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE)
    end
    return _dhl
  end
  --返回
  return _jk
end
--验证并返回
return _fun
